蟻本2-5 Roadblocks
code: python
import heapq
MAX_N = 5000
MAX_R = 100000
INF = float('inf')
# 入力
N, R = map(int,input().split())
G = [[] for _ in range(MAX_N)] # グラフの隣接リスト表現
for i in range(R):
s, t, c = map(int,input().split())
# print(G)
# [1, 100, 0, 100], 2, 250, [3, 200, 1, 250], [3, 100, 1, 200], [2, 100, [], [], [],...] que = []
dist = INF * MAX_N # 最短経路 dist2 = INF * MAX_N # 二番目の最短経路 heapq.heappush(que, 0, 0) while len(que) != 0:
p = heapq.heappop(que)
# 最短距離
# 位置
continue
# vからのルートを順番に検討
# vまでの最短 + 次へのコスト
# 現時点での次までの最短より、v経由でのコストが小さい場合(最短>v経由でのコスト)
# 二つの値を入れ替え(最短と2番目の最短を更新)
dist[e0], d2 = d2, dist[e0] # 次までの最短距離を優先度付きキューに格納
heapq.heappush(que, [dist[e0], e0]) # 現時点での2番目の最短より、v経由でのコストが小さいかつ、、
# 現時点での最短より、v経由でのコストが大きいとき(最短<v経由のコスト<2番目の最短)
if dist2[e0] > d2 and dist[e0] < d2: # 2番目の最短を更新
heapq.heappush(que, [dist2[e0], e0]) # 4 4
# 1 2 100
# 2 3 250
# 2 4 200
# 3 4 100
テーマ